
"""
    请求钩子
        当访问正常视图函数的时候，顺带执行的方法
        1、before_first_request 在处理第一个请求前执行
        2、before_request 在每次请求前执行，在该装饰函数中，一旦return，视图函数不在执行
        3、after_request 如果没有抛出错误，在每次请求后执行
            接受一个参数：视图函数做出的响应
            在次函数中可以对响应值在返回之前做最后一步的处理，再返回
        4、teardown_request 在每次请求后执行
            接受一个参数：用来接受错误信息
"""

from flask import Flask

app = Flask(__name__)


# 适合初始化文件读写
@app.before_first_request
def first1():
    print("first_request1")


# 适合校验参数
@app.before_request
def first2():
    print("first_request2")


# 适合对返回值做统一处理
@app.after_request
def first3(resp):
    print("first_request3")
    return resp


@app.teardown_request
def first4(resp):
    print("first_request4")


@app.route("/")
def test():
    return "hello, world!"


if __name__ == '__main__':
    app.run()
